
package highvoltage;

import java.util.List;

import highvoltage.skeletonHelpers.*;

/**
 * A játékos irányításának megfelelõ útválasztási stratégia.
 * 
 * @author sztomi
 * @version 1.0
 * @created 16-márc.-2010 21:08:05
 */
public class HumanStrategy extends Strategy
{

	public HumanStrategy()
	{
		Logger.print( "HumanStrategy::HumanStrategy()", this );
		Logger.ret();
	}

	/**
	 * A konrét implementáció logikája szerint választ a listában kapott irányok
	 * közül.
	 * 
	 * A rendelkezésre álló választható irányokból a konkrét implementáció
	 * logikája szerint (pl. <i>véletlenszerûen</i>, játékos <i>irányítása
	 * alapján</i>) dönt, és visszatér a választott iránnyal.
	 * 
	 * @param angles
	 *            A választható szögek listája.
	 */
	public float decide( List<Float> angles )
	{
		Logger.print( "HumanStrategy::decide(angles)", this );

		int[] anglesArray = new int[angles.size()];
		for ( int i = 0; i < angles.size(); i++ )
		{
			anglesArray[i] = angles.get( i ).intValue();
		}

		UserInput.choice( "Valasszthato iranyok:", anglesArray );

		Logger.ret();

		return 0.0f;
	}

	/**
	 * A paraméterként kapott belépési súlyból és a jármû saját súlyából
	 * számítva eldönti, hogy megáll -e. Az alapértelmezett implementáció
	 * szerint csak akkor lép, ha a jármû saját súlya nagyobb, vagy egyenlõ,
	 * mint a belépési súly. Ilyenkor a visszatérési érték false.
	 * 
	 * @param entryWeight
	 *            A belépéshez szükséges súly.
	 * @param ownWeight
	 *            A jármû saját súlya.
	 */
	public boolean decideStop( float entryWeight, float ownWeight )
	{
		Logger.print( "HumanStrategy::decideStop()", this );

		boolean stop = UserInput.yesNo( "Megall a jarmu?" );

		Logger.ret();

		return stop;
	}

}
